package cn.xzqwjw.taskmanager.controller.api;

import cn.xzqwjw.taskmanager.domain.vo.TaskDutyVo;
import cn.xzqwjw.taskmanager.service.TaskDutyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

/**
 * @author wjw
 */
@Validated
@RestController
@RequestMapping("/api/task-duty")
public class TaskDutyApiController {

  private final TaskDutyService taskDutyService;

  @Autowired
  public TaskDutyApiController(TaskDutyService taskDutyService) {
    this.taskDutyService = taskDutyService;
  }

  /**
   * 处理 "/api/task-duty" 的 POST 请求，添加
   */
  @PostMapping("")
  public String add(
      @NotNull(message = "参数不能为空")
      @Valid @RequestBody TaskDutyVo taskDutyVo) {
    return taskDutyService.add(taskDutyVo);
  }

  /**
   * 处理 "/api/task-duty/{id:[0-9]+}" 的 DELETE 请求，删除
   */
  @DeleteMapping("/{id:[0-9]+}")
  public String delById(
      @NotNull(message = "id不能为空")
      @Min(value = 1, message = "id必须大于0")
      @PathVariable int id) {
    return taskDutyService.delById(id);
  }

  // ==================== 查询 ====================

  /**
   * 获取所有任务相关责任
   * url类似：/list-all?TaskId=3
   */
  @GetMapping("/list-all")
  public String listAll(
      @NotNull(message = "任务id不能为空")
      @Min(value = 1, message = "任务id必须大于0")
      @RequestParam(value = "TaskId") Integer idTask) {
    return taskDutyService.listAll(idTask);
  }

}
